// Loesung_von_Aufgabe_3.7_2_Aequipotenziallinien

float r1 = 30; // Radius 1
float r2 = 60; // Radius 2
float r3 = 90; // Radius 3
float r4 = 120; // Radius 4
int n = 36; // Anzahl der Punkte
float w; // Winkel

void setup()
{
  size(600, 300);
}

void draw()
{
  background(240);
  translate(width/2, height/2);

  float w = 2*PI/n; // Berechnung der Winkel

  for (int i = 0; i < n; i++)
  {
    // exzentrische, punktierte Kreise
    stroke(0, 0, 255);
    strokeWeight(5);
    point(-80+r1*cos(w*i), r1*sin(w*i));
    point(-100+r2*cos(w*i), r2*sin(w*i));
    point(-120+r3*cos(w*i), r3*sin(w*i));
    point(-140+r4*cos(w*i), r4*sin(w*i));

    stroke(266, 0, 0);
    point(80+r1*cos(w*i), r1*sin(w*i));
    point(100+r2*cos(w*i), r2*sin(w*i));
    point(120+r3*cos(w*i), r3*sin(w*i));
    point(140+r4*cos(w*i), r4*sin(w*i));

    // punktierte Nulllinie
    stroke(0);
    point(0, -300 + i*15);

    // Ladungen
    noStroke();
    fill(0, 0, 255);
    ellipse(-80, 0, 20, 20);
    fill(255, 0, 0);
    ellipse(80, 0, 20, 20);

    stroke(255);
    strokeWeight(3);
    line(-85, 0, -75, 0);
    line(85, 0, 75, 0);
    line(80, -6, 80, 6);
  }
}